package cn.demoncat.util.web;

import cn.demoncat.util.lang.constant.StringConstant;
import org.apache.commons.lang3.StringUtils;

import javax.servlet.http.HttpServletRequest;

/**
 * 描述：Web常用工具
 *
 * @author 延晓磊
 *
 * @since 2017年7月10日
 */
public final class WebUtil {

	/**
	 * 获取请求者的客户端IP地址
	 * 
	 * @param request
	 * 
	 * @return IP
	 */
	public static String getIpAddr(HttpServletRequest request) {
		return IpUtil.getRequesterIp(request);
	}

	/**
	 * 获取请求的完整URL
	 * <p>
	 * http://localhost:8080/user/info?id=1&name=2	> http://localhost:8080/user/info?id=1&name=2
	 * 
	 * @param request
	 * 
	 * @return 请求的URL
	 */
	public static String getRequestUrl(HttpServletRequest request) {
		if (StringUtils.isBlank(request.getQueryString())) {
			return request.getRequestURL().toString();
		}else {
			return request.getRequestURL().append(StringConstant.QUESTION).append(request.getQueryString()).toString();
		}
	}

	/**
	 * 获取请求的URL的Path部分
	 * <p>
	 * http://localhost:8080/user/info?id=1&name=2	> /user/info
	 *
	 * @param request
	 * 
	 * @return 请求的URL的PATH部分
	 */
	public static String getRequestPath(HttpServletRequest request) {
		return request.getRequestURI();
	}

	/**
	 * 获取请求的URL的Param部分
	 * <p>
	 * http://localhost:8080/user/info?id=1&name=2	> id=1&name=2
	 *
	 * @param request
	 * 
	 * @return 请求的URL的Param部分
	 */
	public static String getRequestParam(HttpServletRequest request) {
		return request.getQueryString();
	}

	/**
	 * 获取请求的Referer头(去除请求参数)
	 * <p>
	 * 浏览器	> ''
	 * http://www.demoncat.cn/index?id=1	>	http://www.demoncat.cn/index
	 *
	 * @param request
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2017年6月8日
	 */
	public static String getReferer(HttpServletRequest request){
		//获取Referer头
		String ref = getFullReferer(request);
		//去除查询参数
		if (!ref.isEmpty()) {
			ref = ref.split("\\?",2)[0];
		}
		return ref;
	}

	/**
	 * 获取请求的Referer头(完整)
	 * <p>
	 * 浏览器	> ''
	 * http://www.demoncat.cn/index?id=1	>	http://www.demoncat.cn/index?id=1
	 *
	 * @param request
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年6月8日
	 */
	public static String getFullReferer(HttpServletRequest request){
		return StringUtils.trimToEmpty(request.getHeader(ServletUtil.REFERER_HEADER));
	}
}
